package com.hyt.it.ogt.kq.common.enums;

import com.hyt.it.ogt.kq.common.gov.constant.ResponseCode;
import com.hyt.it.ogt.kq.common.config.exception.KqException;
import lombok.Getter;

/**
 * 进度类型枚举
 */
@Getter
public enum ProgressEnum {

    CREATE_ADMISSION_TICKET(1, "生成全部准考证"),

    DATA_LOCK(2, "锁定编排数据"),

    EXPORT_ADMISSION_TICKET(3, "导出准考证"),

    CREATE_ROOM_DATA(4, "生成考务包"),

    CREATE_MOCK_ROOM_DATA(5, "生成模拟测试考务包"),

    KW_BINDING_BM_DATA(6, "考务绑定报名任务"),

    DEFAULT(-1, "默认进度类型");

    /**
     * 进度类型code
     */
    private final Integer code;

    /**
     * 进度类型名称
     */
    private final String name;

    /**
     * 构造进度类型枚举
     * @param code 进度类型code
     * @param name 进度名称
     */
    ProgressEnum(Integer code, String name) {
        this.code = code;
        this.name = name;
    }

    /**
     * 根据进度类型code获取进度类型枚举
     * @param code 进度类型code
     * @return 进度类型枚举
     * @throws KqException 进度类型暂不支持，抛出异常
     */
    public static ProgressEnum getByCode(Integer code) throws KqException {
        for (ProgressEnum value : values()) {
            if (value.getCode().equals(code)) {
                return value;
            }
        }
        //进度类型暂不支持
        throw new KqException(ResponseCode.UNSUPPORTED_PROGRESS_TYPE.getCode(),
                "进度类型" + code +"暂不支持");
    }

    /**
     * 根据进度类型枚举值获取进度类型枚举
     * @param value 进度类型枚举值
     * @return 进度类型枚举
     * @throws KqException 进度类型暂不支持，抛出异常
     */
    public static ProgressEnum getByValue(ProgressEnum value) throws KqException {
        for (ProgressEnum va : values()) {
            if (va.equals(value)) {
                return va;
            }
        }
        //进度类型暂不支持
        throw new KqException(ResponseCode.UNSUPPORTED_PROGRESS_TYPE.getCode(),
                "进度类型" + value +"暂不支持");
    }

}
